layui.define(["form", "jquery", "layer"], function(exports) {
	var $ = layui.jquery,
		form = layui.form,
		layer = layui.layer;
	/**
	* 禁用 ajax 缓存*/
	layui.jquery.ajaxSetup({
		cache: false
	});
	/**
	phone:[((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$),'请输入正确的手机号'],
	email:[/(^$)|^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,'邮箱格式不正确'],
	url:[/(^$)|(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/,'链接格式不正确'],
	number:[/(^$)|^\d+$/,'只能填写数字'],
	date:[/(^$)|^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,'日期格式不正确'],
	identity:[/(^$)|(^\d{15}$)|(^\d{17}(x|X|\d)$)/,'请输入正确的身份证号']

	 */
	
	window.selectOption={};//全局缓存从服务器获取的选项数据

	var common = {
		/**
		初始化select 选项列表 */
		initSelect: (function() {

			var selectObjs = $("select[item_url]")
			//console.log(selectObjs);
			for (index = 0; index < selectObjs.length; index++) {
				//console.log(selectObjs[index]);
				this.setSelectOption(selectObjs[index])
			}
			form.render('select');

		}),
		/**
		 * 处理 ajax 请求结果
		 * @param result： ajax 返回的结果
		 * @param fn： 成功的处理函数 ( 传入data: fn(result.data) )
		 */
		handlerResult: function(result, fn) {
			// 成功执行操作，失败提示原因
			if (result.code === 0) {
				fn(result.data);
			} else {
				showError(result.msg);
			}
		},

		getWeekList: function() {
			var today = new Date();
			var data = [];
			for (var i = 0; i < 7; i++) {
				var temp = new Date(today.getTime() - 1000 * 60 * 60 * 24 * i);
				data[6 - i] = dateFormat("yyyy-MM-dd", temp);
			}
			return data;
		},

		dateFormat: function(fmt, date) {
			var o = {
				"M+": date.getMonth() + 1,                      //月份
				"d+": date.getDate(),                           //日
				"h+": date.getHours(),                          //小时
				"m+": date.getMinutes(),                        //分
				"s+": date.getSeconds(),                        //秒
				"q+": Math.floor((date.getMonth() + 3) / 3),    //季度
				"S": date.getMilliseconds()                     //毫秒
			};
			if (/(y+)/.test(fmt))
				fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
			for (var k in o)
				if (new RegExp("(" + k + ")").test(fmt))
					fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
			return fmt;
		},
		//当前时间减去N分钟的时间
		dateDec:function (mt){
			var a = new Date()
			a = a.valueOf()
			a = a - mt  *  60 * 1000
			return this.function('yyyy-MM-dd HH:mm', new Date(a))
		},
		/**
		 * 获取 URL 中查询条件部分的参数
		 * @param name      参数名称
		 * @returns         参数值
		 */
		getQueryString: function(name) {
			var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
			var r = window.location.search.substr(1).match(reg);
			if (r != null) return unescape(r[2]);
			return null;
		},
		setHtmlOpt: function(selectObj, jsonData) {
			var html = '';
			if ((selectObj.options.length > 0) && (selectObj.options[0].value.trim() == "")) {
				html = '<option value="">' + selectObj.options[0].text + '</option>'
			}
			var itemFilter = selectObj.getAttribute("item-filter");
			//console.log("aaaa="+itemFilter);
			if (itemFilter) {
				itemFilter =','+ itemFilter + ',';
				//console.log("bbbb="+itemFilter);
			}

			for (var i = 0; i < jsonData.length; i++) {
				if (itemFilter) {
					//console.log(jsonData[i].id+" in "+itemFilter);
					if (itemFilter.indexOf(','+jsonData[i].id + ',') < 0) {
						continue
					}
				}
				html += '<option id="' + jsonData[i].id + '" value="' + jsonData[i].value + '">' + jsonData[i].lable + '</option>';
			}
			//console.log("op="+html);
			selectObj.innerHTML = html;
		},
		/**
		从后台获取选项列表,并替换select选项列表
		 */
		setSelectOption: function(selectObj) {
			var itemUrl = selectObj.getAttribute("item_url");
			//console.log(itemUrl);
			var jsonData = window.selectOption[itemUrl];
			if (jsonData) {
				this.setHtmlOpt(selectObj, jsonData);
				return;
			}//如果没有缓存则从后台获取
			console.log("不存在" + itemUrl);
			let that=this;
			$.ajax({
				url: itemUrl,
				type: 'get',
				async: false,
				/*data : {
					'stable' : stable,
					'type' : type
				},*/
				dataType: 'json',
				success: function(data) {
					//this.selectOption[itemUrl] = data.data;
					//console.log("获取成功" + itemUrl);
					window.selectOption[itemUrl]= data.data;
					that.setHtmlOpt(selectObj, data.data)
				}
			});
		},
		valueToLab: function( jsonDatas,value) {
			for (index=0;index<jsonDatas.length;index++) {
				//console.log(jsonDatas[index]);
				//console.log(value);
				if (jsonDatas[index].value==value)
					return jsonDatas[index].lable
			}
		},
		castValueLable: function(itemUrl,value) {
			var jsonData = window.selectOption[itemUrl];
			if (jsonData) {
				return this.valueToLab(jsonData,value)
			}//如果没有缓存则从后台获取
			console.log("不存在" + itemUrl);
			let that=this;
			$.ajax({
				url: itemUrl,
				type: 'get',
				async: true,
				/*data : {
					'stable' : stable,
					'type' : type
				},*/
				dataType: 'json',
				success: function(data) {
					//this.selectOption[itemUrl] = data.data;
					window.selectOption[itemUrl]= data.data;
					//that.setHtmlOpt(selectObj, data.data)
					jsonData=data.data;
				}
			});
			return this.valueToLab(jsonData,value)
		},
		/**
		后台判断某列值是否已经存在
		 */
		isExist: function(ajaxUrl) {
	        	var isExt=true;       
		        $.ajax({
					url: ajaxUrl,
					type: 'get',
					async: false,
					dataType: 'json',
					success: function(data) {
						//console.log(data);
						if (data.code!=0){
							isExt=false
						}
					}
				});
				return isExt;
		},
		//删除数据
		ajaxDel:function(ajaxUrl){
			let ajaxData={};
		    $.ajax({
				url: ajaxUrl,
				type: 'delete',
				async: false,
				dataType: 'json',
				success: function(data) {
					ajaxData=data;
					// 关闭弹出层                   		
                     layer.msg(data.msg);
                    //obj.del();//删除显示
				}
			});
			return ajaxData;
		},
		//更新数据
		ajaxUpdate:function(ajaxUrl){
			let ajaxData={};
		    $.ajax({
				url: ajaxUrl,
				type: 'get',
				async: false,
				dataType: 'json',
				success: function(data) {
					ajaxData=data;
					// 关闭弹出层                   		
                     layer.msg(data.msg);
                    //obj.del();//删除显示
				}
			});
			return ajaxData;
		}
	}
	/**
	 启动时初始化select 选项列表
	*/
	/*$(function() {
		common.initSelect()
	});*/

	exports("common", common);
});
